// import 'dart:io';
//
// import 'package:flutter/foundation.dart';
// import 'package:flutter/material.dart';
// import 'package:image_picker/image_picker.dart';
// import 'package:mobile_scanner/mobile_scanner.dart';
// import 'package:permission_handler/permission_handler.dart';
//
// class MobileScanNew extends StatefulWidget {
//   const MobileScanNew({super.key});
//
//   @override
//   State<MobileScanNew> createState() => _MobileScanNewState();
// }
//
// class _MobileScanNewState extends State<MobileScanNew> {
//   final MobileScannerController controller = MobileScannerController(
//     torchEnabled: true,
//   );
//
//   double _zoomFactor = 0.0;
//
//   Widget _buildZoomScaleSlider() {
//     return ValueListenableBuilder(
//       valueListenable: controller,
//       builder: (context, state, child) {
//         if (!state.isInitialized || !state.isRunning) {
//           return const SizedBox.shrink();
//         }
//
//         final TextStyle labelStyle = Theme.of(context)
//             .textTheme
//             .headlineMedium!
//             .copyWith(color: Colors.white);
//
//         return Padding(
//           padding: const EdgeInsets.symmetric(horizontal: 8.0),
//           child: Row(
//             children: [
//               Text(
//                 '0%',
//                 overflow: TextOverflow.fade,
//                 style: labelStyle,
//               ),
//               Expanded(
//                 child: Slider(
//                   value: _zoomFactor,
//                   onChanged: (value) {
//                     setState(() {
//                       _zoomFactor = value;
//                       controller.setZoomScale(value);
//                     });
//                   },
//                 ),
//               ),
//               Text(
//                 '100%',
//                 overflow: TextOverflow.fade,
//                 style: labelStyle,
//               ),
//             ],
//           ),
//         );
//       },
//     );
//   }
//
//
//   @override
//   void initState() {
//     // TODO: implement initState
//     super.initState();
//     _getCamreaStae();
//     _getPhotoStae();
//   }
//   Future<bool> _getCamreaStae()async{
//     bool isCamrea = false;
//     var status = await Permission.camera.request();
//     if(status == PermissionStatus.granted){
//       isCamrea = true;
//     }
//     return isCamrea;
//   }
//
//   Future<bool> _getPhotoStae()async{
//     bool isCamrea = false;
//     if(Platform.isAndroid){
//       var status = await Permission.storage.request();
//       if(status == PermissionStatus.granted || status == PermissionStatus.limited){
//         isCamrea = true;
//       }
//       return isCamrea;
//     }
//     var status = await Permission.photos.request();
//     if(status == PermissionStatus.granted || status == PermissionStatus.limited){
//       isCamrea = true;
//     }
//     return isCamrea;
//   }
//
//   @override
//   Widget build(BuildContext context) {
//     return Scaffold(
//       appBar: AppBar(title: const Text('With zoom slider')),
//       backgroundColor: Colors.black,
//       body: Stack(
//         children: [
//           MobileScanner(
//             controller: controller,
//             fit: BoxFit.contain,
//             errorBuilder: (context, error, child) {
//               return ScannerErrorWidget(error: error);
//             },
//           ),
//           Align(
//             alignment: Alignment.bottomCenter,
//             child: Container(
//               alignment: Alignment.bottomCenter,
//               height: 100,
//               color: Colors.black.withOpacity(0.4),
//               child: Column(
//                 children: [
//                   if (!kIsWeb) _buildZoomScaleSlider(),
//                   Row(
//                     mainAxisAlignment: MainAxisAlignment.spaceEvenly,
//                     children: [
//                       ToggleFlashlightButton(controller: controller),
//                       StartStopMobileScannerButton(controller: controller),
//                       Expanded(
//                         child: Center(
//                           child: ScannedBarcodeLabel(
//                             barcodes: controller.barcodes,
//                           ),
//                         ),
//                       ),
//                       SwitchCameraButton(controller: controller),
//                       AnalyzeImageFromGalleryButton(controller: controller),
//                     ],
//                   ),
//                 ],
//               ),
//             ),
//           ),
//         ],
//       ),
//     );
//   }
//
//   @override
//   Future<void> dispose() async {
//     super.dispose();
//     await controller.dispose();
//   }
// }
//
// class ScannerErrorWidget extends StatelessWidget {
//   const ScannerErrorWidget({super.key, required this.error});
//
//   final MobileScannerException error;
//
//   @override
//   Widget build(BuildContext context) {
//     String errorMessage;
//
//     switch (error.errorCode) {
//       case MobileScannerErrorCode.controllerUninitialized:
//         errorMessage = 'Controller not ready.';
//       case MobileScannerErrorCode.permissionDenied:
//         errorMessage = 'Permission denied';
//       case MobileScannerErrorCode.unsupported:
//         errorMessage = 'Scanning is unsupported on this device';
//       default:
//         errorMessage = 'Generic Error';
//         break;
//     }
//
//     return ColoredBox(
//       color: Colors.black,
//       child: Center(
//         child: Column(
//           mainAxisSize: MainAxisSize.min,
//           children: [
//             const Padding(
//               padding: EdgeInsets.only(bottom: 16),
//               child: Icon(Icons.error, color: Colors.white),
//             ),
//             Text(
//               errorMessage,
//               style: const TextStyle(color: Colors.white),
//             ),
//             Text(
//               error.errorDetails?.message ?? '',
//               style: const TextStyle(color: Colors.white),
//             ),
//           ],
//         ),
//       ),
//     );
//   }
// }
//
// class AnalyzeImageFromGalleryButton extends StatelessWidget {
//   const AnalyzeImageFromGalleryButton({required this.controller, super.key});
//
//   final MobileScannerController controller;
//
//   @override
//   Widget build(BuildContext context) {
//     return IconButton(
//       color: Colors.white,
//       icon: const Icon(Icons.image),
//       iconSize: 32.0,
//       onPressed: () async {
//
//         final ImagePicker picker = ImagePicker();
//
//         final XFile? image = await picker.pickImage(
//           source: ImageSource.gallery,
//         );
//
//         if (image == null) {
//           return;
//         }
//
//         final BarcodeCapture? barcodes = await controller.analyzeImage(
//           image.path,
//         );
//
//         print('相册123=============== ${barcodes!.raw.toString()}');
//
//
//         if (!context.mounted) {
//           return;
//         }
//
//         final SnackBar snackbar = barcodes != null
//             ? const SnackBar(
//           content: Text('Barcode found!'),
//           backgroundColor: Colors.green,
//         )
//             : const SnackBar(
//           content: Text('No barcode found!'),
//           backgroundColor: Colors.red,
//         );
//
//         ScaffoldMessenger.of(context).showSnackBar(snackbar);
//       },
//     );
//   }
// }
//
// class StartStopMobileScannerButton extends StatelessWidget {
//   const StartStopMobileScannerButton({required this.controller, super.key});
//
//   final MobileScannerController controller;
//
//   @override
//   Widget build(BuildContext context) {
//     return ValueListenableBuilder(
//       valueListenable: controller,
//       builder: (context, state, child) {
//         if (!state.isInitialized || !state.isRunning) {
//           return IconButton(
//             color: Colors.white,
//             icon: const Icon(Icons.play_arrow),
//             iconSize: 32.0,
//             onPressed: () async {
//               await controller.start();
//             },
//           );
//         }
//
//         return IconButton(
//           color: Colors.white,
//           icon: const Icon(Icons.stop),
//           iconSize: 32.0,
//           onPressed: () async {
//             await controller.stop();
//           },
//         );
//       },
//     );
//   }
// }
//
// class SwitchCameraButton extends StatelessWidget {
//   const SwitchCameraButton({required this.controller, super.key});
//
//   final MobileScannerController controller;
//
//   @override
//   Widget build(BuildContext context) {
//     return ValueListenableBuilder(
//       valueListenable: controller,
//       builder: (context, state, child) {
//         if (!state.isInitialized || !state.isRunning) {
//           return const SizedBox.shrink();
//         }
//
//         final int? availableCameras = state.availableCameras;
//
//         if (availableCameras != null && availableCameras < 2) {
//           return const SizedBox.shrink();
//         }
//
//         final Widget icon;
//
//         switch (state.cameraDirection) {
//           case CameraFacing.front:
//             icon = const Icon(Icons.camera_front);
//           case CameraFacing.back:
//             icon = const Icon(Icons.camera_rear);
//         }
//
//         return IconButton(
//           color: Colors.white,
//           iconSize: 32.0,
//           icon: icon,
//           onPressed: () async {
//             await controller.switchCamera();
//           },
//         );
//       },
//     );
//   }
// }
//
// class ToggleFlashlightButton extends StatelessWidget {
//   const ToggleFlashlightButton({required this.controller, super.key});
//
//   final MobileScannerController controller;
//
//   @override
//   Widget build(BuildContext context) {
//     return ValueListenableBuilder(
//       valueListenable: controller,
//       builder: (context, state, child) {
//         if (!state.isInitialized || !state.isRunning) {
//           return const SizedBox.shrink();
//         }
//
//         switch (state.torchState) {
//           case TorchState.auto:
//             return IconButton(
//               color: Colors.white,
//               iconSize: 32.0,
//               icon: const Icon(Icons.flash_auto),
//               onPressed: () async {
//                 await controller.toggleTorch();
//               },
//             );
//           case TorchState.off:
//             return IconButton(
//               color: Colors.white,
//               iconSize: 32.0,
//               icon: const Icon(Icons.flash_off),
//               onPressed: () async {
//                 await controller.toggleTorch();
//               },
//             );
//           case TorchState.on:
//             return IconButton(
//               color: Colors.white,
//               iconSize: 32.0,
//               icon: const Icon(Icons.flash_on),
//               onPressed: () async {
//                 await controller.toggleTorch();
//               },
//             );
//           case TorchState.unavailable:
//             return const SizedBox.square(
//               dimension: 48.0,
//               child: Icon(
//                 Icons.no_flash,
//                 size: 32.0,
//                 color: Colors.grey,
//               ),
//             );
//         }
//       },
//     );
//   }
// }
//
// class ScannedBarcodeLabel extends StatelessWidget {
//   const ScannedBarcodeLabel({
//     super.key,
//     required this.barcodes,
//   });
//
//   final Stream<BarcodeCapture> barcodes;
//
//   @override
//   Widget build(BuildContext context) {
//     return StreamBuilder(
//       stream: barcodes,
//       builder: (context, snapshot) {
//         final scannedBarcodes = snapshot.data?.barcodes ?? [];
//
//         if (scannedBarcodes.isEmpty) {
//           return const Text(
//             'Scan something!',
//             overflow: TextOverflow.fade,
//             style: TextStyle(color: Colors.white),
//           );
//         }
//
//         return Text(
//           scannedBarcodes.first.displayValue ?? 'No display value.',
//           overflow: TextOverflow.fade,
//           style: const TextStyle(color: Colors.white),
//         );
//       },
//     );
//   }
// }
//
